//package com.ffcs.oss.starter.websocket.core.security;
//
//import cn.iocoder.yudao.framework.security.core.LoginUser;
//import cn.iocoder.yudao.framework.security.core.filter.TokenAuthenticationFilter;
//import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
//import cn.iocoder.yudao.framework.websocket.core.util.WebSocketFrameworkUtils;
//import org.springframework.http.server.ServerHttpRequest;
//import org.springframework.http.server.ServerHttpResponse;
//import org.springframework.web.socket.WebSocketHandler;
//import org.springframework.web.socket.WebSocketSession;
//import org.springframework.web.socket.server.HandshakeInterceptor;
//
//import java.util.Map;
//
///**
// * 登录用户的 {@link HandshakeInterceptor} 实现类
// *
// * 流程如下：
// * 1. 前端连接 websocket 时，会通过拼接 ?token={token} 到 ws:// 连接后，这样它可以被 {@link TokenAuthenticationFilter} 所认证通过
// * 2. {@link LoginUserHandshakeInterceptor} 负责把 {@link LoginUser} 添加到 {@link WebSocketSession} 中
// *
// * @author 芋道源码
// */
//public class LoginUserHandshakeInterceptor implements HandshakeInterceptor {
//
//    @Override
//    public boolean beforeHandshake(ServerHttpRequest request, ServerHttpResponse response,
//                                   WebSocketHandler wsHandler, Map<String, Object> attributes) {
//        LoginUser loginUser = SecurityFrameworkUtils.getLoginUser();
//        if (loginUser != null) {
//            WebSocketFrameworkUtils.setLoginUser(loginUser, attributes);
//        }
//        return true;
//    }
//
//    @Override
//    public void afterHandshake(ServerHttpRequest request, ServerHttpResponse response,
//                               WebSocketHandler wsHandler, Exception exception) {
//        // do nothing
//    }
//
//}
